/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pl.tewi.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import pl.tewi.types.ApplicationType;

/**
 * Adnotacja zawierająca informację o aplikacji do zainstalowania na serwerze
 * aplikacyjnym. Aplikacja w postaci archiwum war|jar|ear bądź w postaci 
 * rozpakowanej zgodnej z wymaganiami JEE
 * @author Marcin Kwapisz
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Application {

    /**
     * Nazwa doceloweej domeny serwera aplikacyjnego, skonfigurowana w 
     * {@link ApplicationServer#targetName() }
     * @return  nazwa docelowej domena 
     */
    String target() default ("domain1");

    /**
     * nazwa aplikacji
     * @return nazwa aplikacji
     */
    String name();

    /**
     * katalog bazowy katalogu z apliakcją. W tej lokalizacji może być np poszukiwany
     * deskryptor wdrożeniowy
     * @return katalog aplikacji
     */
    String applicationPath();

    /**
     * Typ archiwum aplikacji
     * @return typ aplikacji
     */
    ApplicationType applicationType() default (ApplicationType.EAR);

    /**
     * Podmoduły w przypadku aplikacji złożonych. Domyślnie jest to jeden moduł
     * mimo że nie musi być to zgodne z prawdą
     * @return 
     */
    Module[] modules() default { @Module() };

    /**
     * Deskryptor instalaccyjny danej aplikacji
     * @return 
     */
    String[] descriptors() default { };
}
